<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Model_home extends CI_Model {

    /**
     * Model principal academico;
     */
    function __construct() {
        parent::__construct();
    }
    function dadosAluno($usuario){
        $this->db->select('u.nu_matricula, s.ds_situacao_aluno situacao, c.no_curso, concat(u.ano_semestre_inicio, \'/\','.
                'nu_semestre_inicio) seminicio', FALSE);
        $this->db->from('vw_usuario u');
        $this->db->join('tb_situacao_aluno s', 'u.co_situacao_aluno = s.co_situacao_aluno');
        $this->db->join('tb_curso c', 'u.co_curso = c.co_curso');
        $this->db->where('u.co_usuario', $usuario);
        $query = $this->db->get();
        $dadosAlu = $query->result_array();
        return $dadosAlu[0];
    }
    function criar_ctx($ctx_data) {
        $this->db->insert('tb_grade_aluno', $ctx_data);
        return true;
    }

    function listar_ctx($usuario) {
        $this->db->select('nu_semestre_letivo');
        $this->db->from('tb_grade_aluno');
        $this->db->where('co_usuario', $usuario);
        $this->db->where('st_ativo', 'S');

        $query = $this->db->get();

        if ($query->num_rows() >= 1) {
            $sm = $query->result_array();
            $rtn_ctx = [];
            foreach ($sm as $sl) {
                $semestre = $sl['nu_semestre_letivo'];
                $contexto = substr($semestre, 0, 4) . '/' . substr($semestre, 4, 1);
                array_push($rtn_ctx, $contexto);
            }
            return $rtn_ctx;
        } else {
            return [];
        }
    }

    function notificacao($usuario, $contexto) {
        $getRqr ="select p.no_pessoa, u.ft_usuario, e.no_evento, substr(e.ds_evento, 1, 25) msg, e.co_evento, 
            e.dt_evento from tb_evt_requerimento r inner join tb_evento e on r.co_evento = e.co_evento inner 
            join tb_requerimento q on r.co_requerimento = q.co_requerimento left outer join tb_usuario u on 
            e.co_remetente = u.co_usuario left outer join tb_pessoa p on u.co_pessoa = p.co_pessoa where 
            e.tp_evento in ('crd-msg', 'apr-msg', 'bad-msg') and e.st_lido = 'n' and e.st_ativo = 's' 
            and q.st_ativo = 's' and q.co_usuario = ? order by e.dt_evento desc";
        $query1 = $this->db->query($getRqr, [$usuario]);
        $objRqrList = $query1->result_array();
        $qtdRqr = $query1->num_rows();
        $lastRqr = ($qtdRqr <= 6 ) ? $objRqrList : [$objRqrList[0], $objRqrList[1], $objRqrList[2], $objRqrList[3], $objRqrList[4], $objRqrList[5]];
        $getEvts = "select p.no_pessoa, u.ft_usuario, e.no_evento, substr(e.ds_evento, 1, 25) msg, e.co_evento, e.dt_evento 
            from tb_evt_grade g inner join tb_evento e on g.co_evento = e.co_evento inner join tb_grade_aluno a on 
            g.co_grade = a.co_grade left outer join tb_usuario u on e.co_remetente = u.co_usuario left outer join tb_pessoa p
            on u.co_pessoa = p.co_pessoa where e.tp_evento in ('crd-msg', 'apr-msg', 'bad-msg') and e.st_lido = 'n' and 
            e.st_ativo = 's' and a.st_ativo = 's' and a.nu_semestre_letivo = ? and a.co_usuario = ? order by e.dt_evento desc";
        $query2 = $this->db->query($getEvts, [$contexto, $usuario]);
        $objEvtList = $query2->result_array();
        $qtdEvt = $query2->num_rows();
        $cntTotal= array_merge($objEvtList, $objRqrList);
        $qtdEvts = 0;
        $qtdRqrs = 0;
        foreach($cntTotal as $cnt){
            if(!empty($cnt['no_evento'])){
                $qtdEvts++;
            }else{
                $qtdRqrs++;
            }
        }
        $lastEvt = ($qtdEvt <= 6) ? $objEvtList : [$objEvtList[0], $objEvtList[1], $objEvtList[2], $objEvtList[3], $objEvtList[4], $objEvtList[5]];
        return ["qtdRqr" => $qtdRqrs, "qtdEvt" => $qtdEvts, 'lista' => array_merge($lastEvt, $lastRqr)];
    }
    
    function ntf_crd($usuario) {
        $this->db->select('p.no_pessoa, u.ft_usuario, null no_evento, r.no_requerimento msg, r.co_requerimento co_evento, r.dt_atualizacao dt_evento', FALSE);
        $this->db->from('vw_requerimento r');
        $this->db->join('tb_usuario u', 'r.co_remetente = u.co_usuario');
        $this->db->join('tb_pessoa p', 'u.co_pessoa = p.co_pessoa');
        $this->db->where('r.st_ativo', 'S');
        $this->db->where('r.status_rqr', 'N');
        $this->db->where('r.co_destinatario', $usuario);
        $query1 = $this->db->get();
        $objRqrList = $query1->result_array();
        $qtdRqr = $query1->num_rows();
        $lastRqr = ($qtdRqr <= 6 ) ? $objRqrList : [$objRqrList[0], $objRqrList[1], $objRqrList[2], $objRqrList[3], $objRqrList[4], $objRqrList[5]];
        $this->db->select('no_pessoa, ft_usuario, no_evento, msg, co_evento, dt_evento');
        $this->db->from('vw_grade_alterada');
        $this->db->where('co_usu_crd', $usuario);
        $query2 = $this->db->get();
        $objEvtList = $query2->result_array();
        $qtdEvt = $query2->num_rows(); 
        $cntTotal= array_merge($objEvtList, $objRqrList);
        $qtdEvts = 0;
        $qtdRqrs = 0;
        foreach($cntTotal as $cnt){
            if(!empty($cnt['no_evento'])){
                $qtdEvts++;
            }else{
                $qtdRqrs++;
            }
        }
        $lastEvt = ($qtdEvt <= 6) ? $objEvtList : [$objEvtList[0], $objEvtList[1], $objEvtList[2], $objEvtList[3], $objEvtList[4], $objEvtList[5]];
        return ["qtdRqr" => $qtdRqrs, "qtdEvt" => $qtdEvts, 'lista' => array_merge($lastEvt, $lastRqr)];
    }
    
    function rqrOpen($usuario){
        $this->db->from('tb_requerimento');
        $this->db->where_in('st_status_requerimento', ['N', 'L']);
        $this->db->where('co_usuario', $usuario);
        $this->db->where('st_ativo', 'S');
        $query = $this->db->count_all_results();
        return $query;
    }
}

/* End of file model_academico.php */
    /* Location: ./application/models/model_usuario.php */    